﻿import NpcTalkUI from "./NpcTalkUI";

@Component
export default class GuideNPC extends Script {

    /** 当脚本被实例后，会在第一帧更新前调用此函数 */
    protected onStart(): void {

        if (SystemUtil.isClient()) {
            //获取触发器对象
            const trigger = GameObject.findGameObjectByName("GuideNPC触发器") as Trigger;
            //为触发器绑定 有物体进入时 会触发的监听事件
            trigger.onEnter.add(this.onTriggerEnter);
            //为触发器绑定 有物体离开时 会触发的监听事件
            trigger.onLeave.add(this.onTriggerLeave);

            // UIService.show(P_GM);
        }
    }
    //有物体进入了触发区域,other 为进入触发区域的物体对象
    private onTriggerEnter(other: GameObject) {
        //这里判断一下进入区域的物体是不是一名角色且不是GuideNPC
        if (other instanceof Character && other.gameObjectId != "3451795F") {
            //是的话，显示对话UI,并告知对话UI此次唤醒是通过GuideNPC
            UIService.show(NpcTalkUI, "GuideNPC");
            
        }
    }

    //有物体离开了触发区域
    private onTriggerLeave(other: GameObject) {
        //这里判断一下离开区域的物体是不是一名角色
        if (other instanceof Character) {
            //是的话，隐藏对话UI
            UIService.hide(NpcTalkUI);
        }
    }
    /**
     * 周期函数 每帧执行
     * 此函数执行需要将this.useUpdate赋值为true
     * @param dt 当前帧与上一帧的延迟 / 秒
     */
    protected onUpdate(dt: number): void {

    }

    /** 脚本被销毁时最后一帧执行完调用此函数 */
    protected onDestroy(): void {

    }
}